[IA64] update xc_set_hvm_param(), add xc_get_hvm_param()
authorawilliam@xenbuild.aw <awilliam@xenbuild.aw>
Sat, 2 Dec 2006 22:19:50 +0000 (15:19 -0700)
committerawilliam@xenbuild.aw <awilliam@xenbuild.aw>
Sat, 2 Dec 2006 22:19:50 +0000 (15:19 -0700)
Signed-off-by: Alex Williamson <alex.williamson@hp.com>
tools/libxc/ia64/xc_ia64_hvm_build.c

index c39542eb124af5d1155b37ddcd8ea1939f27b3e4..c12dfc3d840023f70bdc376fa3d08fab8e143fd1 100644 (file)
@@ -41,7 +41,7 @@ error_out:
     return -1;
 }
 
-static void
+int 
 xc_set_hvm_param(int handle, domid_t dom, int param, unsigned long value)
 {
     DECLARE_HYPERCALL;
@@ -56,15 +56,37 @@ xc_set_hvm_param(int handle, domid_t dom, int param, unsigned long value)
     arg.index = param;
     arg.value = value;
 
-    if (mlock(&arg, sizeof(arg)) != 0) {
-        PERROR("Could not lock memory for set parameter");
-        return;
-    }
+    if (mlock(&arg, sizeof(arg)) != 0)
+        return -1;
 
     rc = do_xen_hypercall(handle, &hypercall);
     safe_munlock(&arg, sizeof(arg));
-    if (rc < 0)
-        PERROR("set HVM parameter failed (%d)", rc);
+
+    return rc;
+}
+
+int 
+xc_get_hvm_param(int handle, domid_t dom, int param, unsigned long *value)
+{
+    DECLARE_HYPERCALL;
+    xen_hvm_param_t arg;
+    int rc;
+
+    hypercall.op = __HYPERVISOR_hvm_op;
+    hypercall.arg[0] = HVMOP_get_param;
+    hypercall.arg[1] = (unsigned long)&arg;
+
+    arg.domid = dom;
+    arg.index = param;
+
+    if (mlock(&arg, sizeof(arg)) != 0)
+        return -1;
+
+    rc = do_xen_hypercall(handle, &hypercall);
+    safe_munlock(&arg, sizeof(arg));
+
+    *value = arg.value;
+    return rc;
 }
 
 #define HOB_SIGNATURE         0x3436474953424f48        // "HOBSIG64"